C++中"cout<<' '"与cout<<' '<<' '结果为什么不同

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:33:51
输出的是一个九九乘法表
#include"iostream.h"
#include"iomanip.h"
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
cout<<j<<'*'<<i<<'='<<setw(2)<<i*j<<' '<<' ';/*如果此句换成cout<<i<<'*'<<j<<'='<<i*j<<' '则输出结果有问题,为什么呢?*/
}
cout<<endl;
}
return 0;
}
额~~~我就是因为刚才编译后运行出来结果每个乘法结果后面都多了个8224,不过我是vista的,有哪位高手再帮忙看看

问题在于最后一个' '
你应该写成" "

cout<<i<<'*'<<j<<'='<<i*j<<" ";
对于单引号''的返回值一般来说它和字符的asc值严格等价,但是这个值到底用char还是int保存和你是否正确使用单引号有关
对于里面是一个字符就返回char对于里面有很多字符就返回int
你可以通过重载函数测试
#include <stdlib.h>
void fun(int k){
printf("int\n");}
void fun(char k){
printf("char\n");}
int main()
{
fun(' ');//一个空格
fun(' '); //多个空格
system("pause");
return 0;
}
--------
<<对于的重载如果传入的是char类型就会输出字符
如果传入的是int类型就会输出数字
你在输出的最后使用了' '里面扩住了2个空格那么返回值就是int类型
所以输出的是很多8224
单引号返回int类型的时候
是连续的将字符的asc值从低字节到高字节置入int类型的内存区域,有的编译器会在单引号内输入超过4个字符时会报错因为int通常是4字节的,另一些不报错,但有warning.
也就是说单引号内扩住了两个空格字符
int类型的内存格式将是如下
高字节\0 \0 \x20 \x20低字节
转换成十进制就是8224.
详情请看c++.net中如果我要用COUT,CIN怎么办 c++cout怎么不能输出? 在编写C++程序中为什么无法用Cout输出? c语言中能用Cout语句吗?来人判断这个程序 再c++编程中这句话那儿错了“ cout<<"以八进制形式显示:"; 关于C语言的问题,cin cout c++中cout打印地址的困惑 C++中,cout如何控制宽度? c++中cin和cout的使用 C++cout<<'\a';是什么意思啊?